package com.heima.service.impl;

import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.heima.pojo.TbSku;
import com.heima.mapper.TbSkuMapper;
import com.heima.pojo.dto.TbSkuDto;
import com.heima.pojo.vo.PageResponse;
import com.heima.pojo.vo.TbSkuVo;
import com.heima.service.ITbSkuService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

/**
 * <p>
 * 商品表 服务实现类
 * </p>
 *
 * @author AkiRinko
 * @since 2024-06-06
 */
@Service
@RequiredArgsConstructor
public class TbSkuServiceImpl extends ServiceImpl<TbSkuMapper, TbSku> implements ITbSkuService {

    private final TbSkuMapper tbSkuMapper;

    /**
     * 搜索商品
     *
     * @param pageIndex
     * @param pageSize
     * @param skuName
     * @param classId
     * @return
     */
    @Override
    public PageResponse<TbSkuVo> selectTbSkuPage(Integer pageIndex, Integer pageSize, String skuName, String classId) {
        Page<TbSkuVo> page = new Page<>(pageIndex, pageSize);
        Page<TbSkuVo> result = tbSkuMapper.selectTbSkuPage(page, skuName);

//        PageResponse<TbSkuVo> response = new PageResponse<>();
//        response.setPageIndex(String.valueOf(pageIndex));
//        response.setPageSize(String.valueOf(pageSize));
//        response.setTotalPage(String.valueOf(result.getPages()));
//        response.setTotalCount(String.valueOf(result.getTotal()));
//        response.setCurrentPageRecords(result.getRecords());
//
//        return response;

        return PageResponse.of(result, TbSkuVo.class);
    }

    /**
     * 新增商品
     *
     * @param dto
     */
    @Override
    public void insertTbSku(TbSkuDto dto) {
        TbSku tbSku = BeanUtil.copyProperties(dto, TbSku.class);
        tbSkuMapper.insert(tbSku);
    }

    /**
     * 修改商品
     *
     * @param skuId
     * @param dto
     */
    @Override
    public void updateTbSku(String skuId, TbSkuDto dto) {
        TbSku tbSku = BeanUtil.copyProperties(dto, TbSku.class);
        LambdaQueryWrapper<TbSku> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(TbSku::getSkuId, skuId);

        tbSkuMapper.update(tbSku, wrapper);
    }
}
